/**
 * 
 */
package cc.dogtailflower.framework.handler;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import cc.dogtailflower.framework.exception.AppException;
import cc.dogtailflower.framework.util.ReflectionUtil;

/*
 * Bean的处理类 相当于一个bean容器
 * @author cc
 *
 */
public class BeanHandler {

	/*
	 * class对象和又反射生成的实例对象之间的映射集合，方便根据class获取对象
	 * 
	 */
	private static final Map<Class<?>,Object> CLASS_BEAN_MAP = new HashMap<Class<?>,Object>();
	
	/*
	 * 初始化时，给集合添加对象
	 */
	static{
		Set<Class<?>> classSet = ClassHandler.getClassSet();
		for(Class<?> cls : classSet){
			Object object = ReflectionUtil.getInstance(cls);
			CLASS_BEAN_MAP.put(cls, object);
		}
	}

	
	/*
	 * get方法
	 */
	public static Map<Class<?>, Object> getClassBeanMap() {
		return CLASS_BEAN_MAP;
	}
	
	/*
	 * 根据class去集合中获取实例对象
	 */
	@SuppressWarnings("unchecked")
	public static <T> T getBeanFromMap(Class<T> cls){
		if(!CLASS_BEAN_MAP.containsKey(cls)){
			throw new AppException("找不到该class对象:"+cls.getName());
		}
		return (T) CLASS_BEAN_MAP.get(cls);
	}
	
}
